當我們想在資料存進資料庫前的最後一刻,或是取出資料庫後的第一時間對資料做處理,可以在 Model 裡寫 Mutator 和 Accessor。 官網舉一個加密解密的例子,蠻好理解他的作用的。
今天用一個大家都有的 User Model 做練習,將 name 全部轉為小寫後存進資料庫,取出時,全部轉成大寫。很明顯的,這個練習本身沒什麼意義XDD。開始 trytry 吧!
User Model
加入下面兩個 function:
public function setNameAttribute($value) // Mutator 存進資料庫前作用
{
$this->attributes['name'] = strtolower($value);
}
public function getNameAttribute($value) // Accessor 從資料庫取出後作用
{
return $this->attributes['name'] = strtoupper($value);
}
注意:function 的名稱是依照欄位名稱來命名,如 set+欄位名稱(upper camel大寫駝峰)+Attribute。 如果 欄位名稱是 user_name 那 function 名稱就要改成 setUserNameAttribute。
感謝 Ray 大!